#include "main.h"

/*
* metodo insert, insertar un nodo en la lista de clientes
* Recibe la cabeza de la lista, y un nodo a insertar 
*/
int insert(node *head,node *ptr)
{
	node *p;// crea un nodo temporal
	p=head;// guarda la cabeza de la lista en el nodo temporal
	while(p->next!=NULL)//mientras el siguiente del nodo temporal no sea nulo
		p=p->next;// avanza en la lista
	p->next=ptr;// inserta en el ultimo nodo el nodo temporal
	return 0;
}

/*
* metodo del, elimina un nodo de la lista de clientes
* Recibe la cabeza de la lista, y el socket que se desconecto
*/
int del(node *head,int socket)
{
	node *p,*q;// crea dos nodos temporales
	p=head;// guarda en el nodo p la cabeza de la lista
	if(p->next==NULL)// si la lista esta vacia
	{
		perror("del");// imprime un error
		return (-1);// termina la ejecucion
	}
	while(p->next!=NULL)//mientras el siguiente del puntero no sea nulo
	{
		q=p->next;// guarda el siguiente del nodo p en q
		if(q->sockfd==socket)//si el socket del nodo q es igual al socket que pasa como parametro
		{
			p->next=q->next;// el siguiente de p ya no es q, sino el siguiente de q
			free(q);// se libera q de la memoria
			close(socket);// se cierra el socket
			return 0;// se termina el metodo
		}
		else// si el socket del nodo q no es el socket desconectado
			p=p->next;// se avanza al siguiente nodo
	}
	return 0;
}
